package com.dream.service.user.bean;

import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Set;

/**
 * Created by ever on 2016/5/17.
 */
public class ForgetPwdEmailBean {

    public static final int ACTIVE_TIME = 1800000;
    /****
     * TODO 这里有个问题：如果部署了多个user-service代码，那么每次请求会被不同的service处理，
     * 就造成了发送邮件的service和接受修改密码的service不是同一个，
     * 那么当前保存发送信息的map中就没有另一个service中发送的数据。
     *
     * 保存发送了忘记密码邮件的用户邮箱和发邮件时间
     * 发送邮件时把邮箱add进去
     * 发起修改密码请求就移除，只要数据格式正确就移除
     * 想要添加数据，应该调用此类方法：add，不要直接操作map
     * 防止用户修改成功之后再次点击此请求
     */
    public static final HashMap<String,Long> FORGET_PWD_USER = new HashMap<String,Long>();


    public static void add(String email,long time){
        FORGET_PWD_USER.put(email,time);

        //顺便再遍历所有数据，把超时的的数据全都移除掉
        long now = System.currentTimeMillis();
        Iterator<String> iterator = FORGET_PWD_USER.keySet().iterator();
        while(iterator.hasNext()){
            String key = iterator.next();
            long mtime = FORGET_PWD_USER.get(key);
            if((now - mtime )> ACTIVE_TIME){
                iterator.remove();
            }
        }
    }

}
